/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Persistencia;

import cprincipal.DIADterrestre;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

public class AmbulanciaAereaXmlDiad
{
    private Element root;
    private String fileLocation = "src/Archivos/diadTerrestre.xml";

    public AmbulanciaAereaXmlDiad()
    {
        try
        {
            SAXBuilder builder = new SAXBuilder(false);
            Document doc = null;
            doc = builder.build(fileLocation);
            root = doc.getRootElement();
        }
        catch (JDOMException ex)
        {
            System.out.println("No se pudo iniciar la operacion por: " + ex.getMessage());
        }
        catch (IOException ex)
        {
            System.out.println("No se pudo iniciar la operacion por: " + ex.getMessage());
        }
    }

    private Element AmbulanciaAereaDiadtoXmlElement(DIADterrestre nAerea)
    {
        Element ambulanciasTRA = new Element("diad");

        Element placa = new Element("placa");
        placa.setText(Integer.toString(nAerea.getPlaca()));
        Element utilizacionOxigeno = new Element("utilizacionOxigeno");
         utilizacionOxigeno.setText(Integer.toString(nAerea.getUtilizacionOxigeno()));
        Element utilizacionDesfribilador = new Element("utilizacionDesfribilador");
         utilizacionDesfribilador.setText(Integer.toString(nAerea.getUtilizacionDesfribilador()));
        Element inyectadora = new Element("inyectadora");
        inyectadora.setText(Integer.toString(nAerea.getInyectadora()));
        Element  suero = new Element ("suero");
         suero.setText(Integer.toString(nAerea.getSuero()));
        Element  manta = new Element ("manta");
          manta.setText(Integer.toString(nAerea.getManta()));
        Element  vendaje = new Element ("vendaje");
         vendaje.setText(Integer.toString(nAerea.getVendaje()));
        Element  respiratorio = new Element ("respiratorio");
         respiratorio.setText(nAerea.getRespiratorio());
          Element antialergico = new Element("antialergico");
        antialergico.setText(Integer.toString(nAerea.getAntialergico()));
         Element dilatador = new Element("dilatador");
        dilatador.setText(Integer.toString(nAerea.getDilatador()));
        Element antiflamatorio = new Element("antiflamatorio");
         antiflamatorio.setText(Integer.toString(nAerea.getAntiflamatorio()));
       


        ambulanciasTRA.addContent(placa);
        ambulanciasTRA.addContent(utilizacionOxigeno);
        ambulanciasTRA.addContent(utilizacionDesfribilador);
        ambulanciasTRA.addContent(inyectadora);
        ambulanciasTRA.addContent(suero);
        ambulanciasTRA.addContent(manta);
        ambulanciasTRA.addContent(vendaje);
        ambulanciasTRA.addContent(respiratorio);
        ambulanciasTRA.addContent(antialergico);
        ambulanciasTRA.addContent(dilatador);
        ambulanciasTRA.addContent(antiflamatorio);
        return ambulanciasTRA;
    }

      private DIADterrestre DIAdterrestreToObject(Element element) throws ParseException
      {
      DIADterrestre nAerea = new DIADterrestre ();

                 nAerea.setPlaca(Integer.parseInt(element.getChildText("placa")));
                 nAerea.setUtilizacionOxigeno(Integer.parseInt(element.getChildText("utilizacionOxigeno")));
                 nAerea.setUtilizacionDesfribilador(Integer.parseInt(element.getChildText("utilizacionDesfribilador")));
                 nAerea.setInyectadora(Integer.parseInt(element.getChildText("inyectadora")));
                 nAerea.setSuero(Integer.parseInt(element.getChildText("suero")));
                 nAerea.setManta(Integer.parseInt(element.getChildText("manta")));
                 nAerea.setVendaje(Integer.parseInt(element.getChildText("vendaje")));
                 nAerea.setRespiratorio(element.getChildText("respiratorio"));
                 nAerea.setAntialergico(Integer.parseInt(element.getChildText("antialergico")));
                 nAerea.setDilatador(Integer.parseInt(element.getChildText("dilatador")));
                 nAerea.setAntiflamatorio(Integer.parseInt(element.getChildText("antiflamatorio")));
                
        return nAerea;
    }

         public static Element buscar(List raiz, String dato) {
        Iterator i = raiz.iterator();
        while (i.hasNext()) {
            Element e = (Element) i.next();
            if (dato.equals(e.getChild("placa").getText())) {
                return e;
            }
        }
        return null;
    }


    private boolean updateDocument() {
        try {
            XMLOutputter out = new XMLOutputter(org.jdom.output.Format.getPrettyFormat());
            FileOutputStream file = new FileOutputStream(fileLocation);
            out.output(root, file);
            file.flush();
            file.close();
            return true;
        } catch (Exception e) {
            System.out.println("error: " + e.getMessage());
            return false;
        }
    }

    public boolean agregarDIADterrestre(DIADterrestre nAerea) {
        boolean resultado = false;
        root.addContent(AmbulanciaAereaDiadtoXmlElement(nAerea));
        resultado = updateDocument();
        return resultado;
    }



 public DIADterrestre buscarDIADterrestre(Integer dato) {
        Element aux = new Element("diad");
        List DIAD = this.root.getChildren("diad");

        while (aux != null) {
            aux = AmbulanciaAereaXmlDiad.buscar(DIAD,  Integer.toString(dato));
            if (aux != null) {
                try {
                    return DIAdterrestreToObject(aux);
                } catch (ParseException ex) {
                    System.out.println(ex.getMessage());
                }
            }
        }
        return null;
    }

  public boolean actualizarDIADterrestre(DIADterrestre nAerea) {
        boolean resultado = false;
        Element aux = new Element("diad");
        List DIAD = this.root.getChildren("diad");
        while (aux != null) {
            aux = AmbulanciaAereaXmlDiad.buscar(DIAD, Integer.toString(nAerea.getPlaca()));
            if (aux != null) {
                DIAD.remove(aux);
                resultado = updateDocument();
            }
        }
        agregarDIADterrestre(nAerea);
        return resultado;
    }

   public boolean borrarDIADterrestre(Integer dato) {
        boolean resultado = false;
        Element aux = new Element("diad");
        List DIAD = this.root.getChildren("diad");
        while (aux != null) {
            aux = AmbulanciaAereaXmlDiad.buscar(DIAD, String.valueOf(dato));
            if (aux != null) {
                DIAD.remove(aux);
                resultado = updateDocument();
            }
        }
        return resultado;
    }


     public ArrayList<DIADterrestre> todasLosDIAD() {
        ArrayList<DIADterrestre> resultado = new ArrayList<DIADterrestre>();
        for (Object it : root.getChildren()) {
            Element xmlElem = (Element) it;
            try {
                resultado.add(DIAdterrestreToObject(xmlElem));
            } catch (ParseException ex) {
                System.out.println(ex.getMessage());
            }
        }
        return resultado;
    }
}


